package pt.MyDictionary.MVC;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import pt.MyDictionary.model.Word;
public class Interface {
private String buffer;
private String[] nameColumn = {"Words"};
private Object[][] dataColumn = {{null}};
private DefaultTableModel dtm;
private JFrame frame;
private JPanel panel1,panel2,panel3,panel2a,panel2b,searchPanel;
private JTextField searchBar;
private JMenuBar menuBar;
private JMenu menu;
private JMenuItem add,remove,save;
private JTable table;
private JTextPane panelText;
private JButton searchButton;
private JLabel consistency;
public Interface(){
refresh();
}
private void refresh(){
frame = new JFrame();
frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));
buildFirstPanel();
buildSecondPanel();
buildThirdPanel();
frame.setTitle("Programming techniques-Assignment5-Drimbarean Maria");
frame.setPreferredSize(new Dimension(800, 600));
frame.setMaximumSize(new Dimension(200, 150));
frame.setMinimumSize(new Dimension(800,600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setBackground(Color.pink);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void buildFirstPanel(){
panel1 = new JPanel();
menuBar = new JMenuBar();
menuBar.setBackground(Color.CYAN);
menu = new JMenu("Actions");
add = new JMenuItem("Add word");
add.setBackground(Color.CYAN);
remove = new JMenuItem("Remove word");
remove.setBackground(Color.CYAN);
save = new JMenuItem("Save");
save.setBackground(Color.CYAN);
menu.setMnemonic(KeyEvent.VK_A);
add.setMnemonic(KeyEvent.VK_A);
remove.setMnemonic(KeyEvent.VK_S);
save.setMnemonic(KeyEvent.VK_E);
frame.getContentPane().add(panel1);
panel1.setBackground(Color.PINK);
panel1.add(menuBar);
menuBar.add(menu);
menu.add(add);
menu.add(remove);
menu.add(save);
}
protected void buildSecondPanel(){
panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.setBackground(Color.YELLOW);
panel2.removeAll();
panel2.revalidate();
panel2.repaint();
panel2a = new JPanel();
panel2b = new JPanel();
frame.getContentPane().add(panel2);
panel2.add(panel2a);
panel2.add(panel2b);
searchPanel = new JPanel();
searchPanel.setLayout(new FlowLayout());
panel2b.add(searchPanel);
// A
table = new JTable();
dtm = new DefaultTableModel(dataColumn,nameColumn){
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
dtm.removeRow(0);
table = new JTable(dtm);
JScrollPane scrollpane = new JScrollPane(table);
scrollpane.setMinimumSize(new Dimension(300,400));
scrollpane.setPreferredSize(new Dimension(300,400));
panel2a.add(scrollpane);
// B
panel2b.setLayout(new BoxLayout(panel2b, BoxLayout.PAGE_AXIS));
searchBar = new JTextField();
searchBar.setColumns(20);
searchButton = new JButton("Search");
searchButton.setBackground(Color.CYAN);
panelText = new JTextPane();
panelText.setPreferredSize(new Dimension(300,300));
//panou2b.add(searchBar);
//panou2b.add(searchButton);
searchPanel.add(searchBar);
searchPanel.add(searchButton);
panel2b.add(panelText);
}
protected void updateList(){
panel2a.removeAll();
panel2a.revalidate();
panel2a.repaint();
table = new JTable();
dtm = new DefaultTableModel(dataColumn,nameColumn){
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
dtm.removeRow(0);
table = new JTable(dtm);
JScrollPane scrollpane = new JScrollPane(table);
scrollpane.setMinimumSize(new Dimension(300,400));
scrollpane.setPreferredSize(new Dimension(300,400));
panel2a.add(scrollpane);
}
private void buildThirdPanel(){
panel3 = new JPanel();
panel3.setBackground(Color.PINK);
consistency = new JLabel("Consistency: ");
panel3.add(consistency);
frame.getContentPane().add(panel3);
}
///Action Listeners///
protected void ForAddActionListener(ActionListener action){
add.addActionListener(action);
}
protected void ForRemoveActionListener(ActionListener action){
remove.addActionListener(action);
}
protected void ForSearchActionListener(ActionListener action){
searchButton.addActionListener(action);
}
protected void ForSaveActionListener(ActionListener action){
save.addActionListener(action);
}
protected void addMause(){
table.addMouseListener(new MouseAdapter() {
@Override
//public void mouseClicked(MouseEvent me) {
public void mousePressed(MouseEvent me) {
int row = table.rowAtPoint(me.getPoint());
int col = table.columnAtPoint(me.getPoint());
if (row >= 0 && col >= 0 && me.getClickCount() == 2) {
buffer = new String((String)dtm.getValueAt(row, col));
setSearchBar(buffer);
}
}
});};
//getters and setters//
/**
* @return the nameColumn
*/
public String[] getNameColumn() {
return nameColumn;
}
/**
* @param nameColumn the nameColumn to set
*/
public void setNameColumn(String[] nameColumn) {
this.nameColumn = nameColumn;
}
/**
* @return the dataColumn
*/
public Object[][] getDataColumn() {
return dataColumn;
}
/**
* @param dataColumn the dataColumn to set
*/
public void setDataColumn(Object[][] dataColumn) {
this.dataColumn = dataColumn;
}
/**
* @return the searchBar
*/
public JTextField getSearchBar() {
return searchBar;
}
/**
* @param searchBar the searchBar to set
*/
public void setSearchBar(String searchBar) {
this.searchBar.setText(searchBar);
}
/**
* @return the table
*/
public JTable getTable() {
return table;
}
/**
* @param table the table to set
*/
public void setTable(JTable table) {
this.table = table;
}
/**
* @return the panelText
*/
public JTextPane getPanelText() {
return panelText;
}
/**
* @param panelText the panelText to set
*/
public void setPanelText(String panelText) {
this.panelText.setText(panelText);
}
/**
* @return the searchButton
*/
public JButton getSearchButton() {
return searchButton;
}
/**
* @param searchButton the searchButton to set
*/
public void setSearchButton(JButton searchButton) {
this.searchButton = searchButton;
}
/**
* @return the consistency
*/
public JLabel getConsistency() {
return consistency;
}
/**
* @param consistency the consistency to set
*/
public void setConsistency(String consistency) {
this.consistency.setText(consistency);
}
protected void addWord(Word c){
Object[] i = {c.getWord()};
dtm.addRow(i);
}
protected void addWord(String c){
Object[] i = {c};
dtm.addRow(i);}
}